package com.cs1.vue.模块.学生信息查询模块.控制器;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cs1.vue.工具类.数据库.SQL操作;
import com.cs1.vue.模块.学生信息查询模块.数据库.json.学生信息SQLjson;
import com.cs1.vue.模块.学生信息查询模块.数据库.json.学生表管理SQLjson;
import com.cs1.vue.模块.学生信息查询模块.数据库.操作类.学生信息SQL操作;
import com.cs1.vue.模块.学生信息查询模块.数据库.操作类.学生信息表管理SQL操作;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/mk/xsxxcx/ty") // 模块/学生信息查询/统一
public class 统一控制器 {
	@Autowired
	private SQL操作 sql操作;
	@Autowired
	private 学生信息表管理SQL操作 学生信息表管理SQL操作;
	@Autowired
	private 学生信息SQL操作 学生信息SQL操作;

	@GetMapping("/xjb")
	public String 新建表(@RequestParam("表名") String name,
					  @RequestParam(value = "扩展",defaultValue = "") String 扩展){
		if(学生信息表管理SQL操作.表名是否存在(name))
			return "表名已存在";
		学生表管理SQLjson json =new 学生表管理SQLjson();
		json.set表名(name);
		json.set扩展(扩展);
		学生信息表管理SQL操作.增(json);
		return "建立成功";
	}
	
	@GetMapping("/hqbpz")
	public Map 获取表配置(@RequestParam("表名") String name){
		学生表管理SQLjson a= 学生信息表管理SQL操作.根据表名查(name);
		if(a==null)
			return null;
		JSONObject json=new JSONObject();
		json.put("表名",name);
		String 列="学生名,性别,年龄";
		if(!a.get扩展().equals(""))
			列+=","+a.get扩展();
		json.put("列",列);
		return json;
	}
	
	/**
	 *  反正不多,也懒得做分开获取了
	 */
	@GetMapping("/hqbsj")
	public List<学生信息SQLjson> 获取表数据(@RequestParam("表名") String name){
		return 学生信息SQL操作.查_根据表名(name);
	}
	
	
	
	@PostMapping("/gxb")
	public String 更新表(@RequestBody List<学生信息SQLjson> list){
		if(list==null||list.size()==0)
			return "没有数据需要更新";
		Map map =sql操作.自定义查Map("select MAX(id) from "+sql操作.get库名()+"."+list.get(0).GetTableName()+
				" where 学生表管理_表名=? ",list.get(0).get学生表管理_表名());
		Long max=(Long) map.getOrDefault("MAX(id)",-1);//找不到说明这个表 是第一次写入数据
		max=max==null?-1:max;
		for (int i=0;i<list.size();++i){
			if(list.get(i).getId()==null||list.get(i).getId()>max){
				list.get(i).setId(null);//让它自动填充
				学生信息SQL操作.增(list.get(i));
			}else {
				学生信息SQL操作.改_根据id(list.get(i));
			}
		}
		return "更新成功";
	}



}

